package yygh.cmn.Controller;

import yygh.hospital.model.cmn.Dict;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import yygh.cmn.Service.DictService;
import yygh.common.result.Result;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

@Api(value = "数据字典接口")
@RestController
@RequestMapping("/admin/cmn/dict")
public class DictController {

    @Autowired
    DictService dictService;

    //方法接口1： 根据数据id查询子数据列表
    @ApiOperation(value = "根据数据id查询子数据列表")
    @GetMapping("findChildData/{id}")
    public Result findChildData(@PathVariable Long id){
        List<Dict> list = dictService.findChildData(id);
        return  Result.ok(list);
    }

    //方法接口2：导出数据字典，放入excel中
    @ApiOperation(value = "导出数据字典")
    @GetMapping("exportData")
    public  void exportData(HttpServletResponse response){
        dictService.exportDictData(response);
    }


    //方法接口3：读取excel中的数据字典文件，并存入到数据库中
    @ApiOperation("读取excel中的数据字典文件，并存入到数据库中")
    @PutMapping("importData")
    public  Result importData(MultipartFile file){
        dictService.importDictData(file);
        return  Result.ok();
    }

    /**
     *  方法接口4和方法接口5供外部微服务service_hosp调用。
     * @param value
     * @return
     */
    //方法接口4：根据value字段查找对象的name字段
    @GetMapping("getName/{value}")
    public  String getName(@PathVariable String value){

        String name=dictService.getDictName("",value);

        return  name;
    }

    //方法接口5：根据value字段和dict_code查找对象的name字段
    @GetMapping("getName/{dictCode}/{value}")
    public  String getName(@PathVariable String value,
                           @PathVariable String dictCode){
        String name=dictService.getDictName(dictCode,value);

        return  name;
    }

    //方法接口6:根据dict_code查找所有的子节点
    @ApiOperation("根据dict_code查找所有的子节点")
    @GetMapping("findByDictCode/{dictCode}")
    public Result findByDictCode(@PathVariable String dictCode){
        List<Dict> dicts=dictService.findByDictCode(dictCode);
        return  Result.ok(dicts);
    }

}
